<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cliente extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los clientes activos o inactivos pero NO los borrados (-1)
	function consultar(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Cargo el modelo donde estan los datos de los clientes registrados
			$this->load->model('m_cliente');
									
			//Busco todos los clientes, tanto activos como inactivos, menos los borrados(-1)
			$listadoClientes = $this->m_cliente->buscar();
			
			//Le paso el listado de todos los clientes a la vista para que los muestre en una tabla
			$datos['clientes'] = $listadoClientes;
			
			////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////				
			//Cargo la vista donde se muestra la tabla de clientes y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_clientes', $datos, true);
			
			//Cargo la vista principal con los datos de la vista consultar clientes
			$this->load->view('v_admin', $datosPrincipal);
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	function eliminar($idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idCliente sea numerico y mayor que cero.			
			if(is_numeric($idCliente) && $idCliente>0){
				//Cargo el modelo donde estan los datos de los clientes registrados
				$this->load->model('m_cliente');
				
				//Elimino al cliente pasado por la url
				$respuesta = $this->m_cliente->eliminar($idCliente, $this->session->userdata('idUsuarioLog'));
				
				//Busco todos los clientes, tanto activos como inactivos, menos los borrados(-1) que quedaron
				$listadoClientes = $this->m_cliente->buscar();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en una tabla
				$datos['clientes'] = $listadoClientes;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////								
				//Cargo la vista donde se muestra la tabla de clientes
				$this->load->view('v_clientes', $datos);
			} else {
				//No se han pasado todos los parametros necesarios para borrar un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se han pasado todos los parametros necesarios para borrar un cliente");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un cliente");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaCrear(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){							
			////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			//Cargo la vista donde se muestra el formulario para crear un cliente y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_clientes_crear','', true);
			
			//Cargo la vista principal con los datos de la vista para crear un cliente
			$this->load->view('v_admin', $datosPrincipal);
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function crear(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que se haya pasado por post el apellido, nombre, sexo, email y el estado del cliente a crear
			if($this->input->post('apellido',true) != "" && $this->input->post('nombre',true) != "" && is_numeric($this->input->post('sexo',true)) && ($this->input->post('sexo',true)=='0' || $this->input->post('sexo',true)=='1') && $this->input->post('email',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){				
				//Cargo el modelo donde estan los datos de los clientes
				$this->load->model('m_cliente');
				
				//Creamos el cliente
				$resultado = $this->m_cliente->crear(random_string('alnum',20), quotes_to_entities($this->input->post('apellido',true)),quotes_to_entities($this->input->post('nombre',true)),$this->input->post('dni',true),$this->input->post('sexo',true),quotes_to_entities($this->input->post('empresa',true)),quotes_to_entities($this->input->post('pais',true)),quotes_to_entities($this->input->post('provincia',true)),quotes_to_entities($this->input->post('localidad',true)),quotes_to_entities($this->input->post('direccion',true)),quotes_to_entities($this->input->post('email',true)),quotes_to_entities($this->input->post('emailAlternativo',true)),quotes_to_entities($this->input->post('emailFacebook',true)),quotes_to_entities($this->input->post('telefono',true)),quotes_to_entities($this->input->post('facebook',true)),quotes_to_entities($this->input->post('twitter',true)),quotes_to_entities($this->input->post('observaciones',true)),$this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
				
				if($resultado == 1){					
					//Guardo el id del cliente creado recientemente ya que se usa para crear el usuario.
					$ultimoClienteCreado = $this->db->insert_id();
					
					//Cargo el modelo donde estan los datos de los usuarios
					$this->load->model('m_usuario');
					
					//Creamos el usuario
					$resultado = $this->m_usuario->crear($this->input->post('nombreUsuario',true),
														  $this->input->post('email',true),
														  2,
														  $ultimoClienteCreado,
														  $this->input->post('password',true),
														  1, $this->session->userdata('idUsuarioLog'));
														  
					if($resultado == 1){
						echo("<script> alert('El cliente: ".$this->input->post('apellido',true)." se ha creado correctamente y su usuario tambi\u00e9n.');</script>");
					} else{
						echo("<script> alert('El cliente: ".$this->input->post('apellido',true)." se ha creado correctamente, pero el usuario no ha sido creado.');</script>");
					}
				}else{
					echo("<script> alert('El cliente: ".$this->input->post('apellido',true)." no se ha creado. Ha habido un error.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaModificar($idCliente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idCliente pasado sea numerico y mayor que cero.
			if(is_numeric($idCliente) && $idCliente>0){
				//Cargo el modelo donde estan los datos de los clientes registrados
				$this->load->model('m_cliente');
				
				//Busco al cliente que hay que modificar
				$cliente = $this->m_cliente->get($idCliente);
				
				//Tercera comprobacion: Que el cliente pasado por la url sea existente
				if($cliente->num_rows() == 1){
					//Le paso el cliente a modificar a la vista
					$datos['clienteSel'] = $cliente;
					
					//Busco al cliente siguiente del que hay que modificar
					$idClienteSig = $this->m_cliente->getContiguo($idCliente,1);
					
					//Le paso el cliente siguiente del que hay que modificar a la vista
					$datos['idClienteSig'] = $idClienteSig;
					
					//Busco al cliente anterior del que hay que modificar
					$idClienteAnt = $this->m_cliente->getContiguo($idCliente,-1);
					
					//Le paso el cliente anterior del que hay que modificar a la vista
					$datos['idClienteAnt'] = $idClienteAnt;
					
					//Cargo la vista donde se muestra el formulario para modificar un cliente y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_clientes_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un cliente
					$this->load->view('v_admin', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para modificar un cliente
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function modificar($idCliente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){	   
			//Segunda comprobacion: Que se haya pasado por post el apellido, nombre, sexo, email y el estado del cliente a modificar.
			//Ademas que se haya pasado por la url el id del cliente a modificar y que sea numerico y mayor que cero
			if(is_numeric($idCliente) && $idCliente>0 && $this->input->post('apellido',true) != "" && $this->input->post('nombre',true) != "" && 
			   is_numeric($this->input->post('sexo',true)) && ($this->input->post('sexo',true)=='0' || $this->input->post('sexo',true)=='1') && 
			   $this->input->post('email',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){				
				//Cargo el modelo donde estan los datos de los clientes
				$this->load->model('m_cliente');
											
				//Modificamos el cliente
				$resultado = $this->m_cliente->modificar($idCliente, quotes_to_entities($this->input->post('apellido',true)),quotes_to_entities($this->input->post('nombre',true)),$this->input->post('dni',true),$this->input->post('sexo',true),quotes_to_entities($this->input->post('empresa',true)),quotes_to_entities($this->input->post('pais',true)),quotes_to_entities($this->input->post('provincia',true)),quotes_to_entities($this->input->post('localidad',true)),quotes_to_entities($this->input->post('direccion',true)),quotes_to_entities($this->input->post('email',true)),quotes_to_entities($this->input->post('emailAlternativo',true)),quotes_to_entities($this->input->post('emailFacebook',true)),quotes_to_entities($this->input->post('telefono',true)),quotes_to_entities($this->input->post('facebook',true)),quotes_to_entities($this->input->post('twitter',true)),quotes_to_entities($this->input->post('observaciones',true)),$this->input->post('estado',true));
								
				if($resultado == 1){														
					echo("<script> alert('El cliente: ".$this->input->post('apellido',true)." se ha modificado correctamente. ".$mensaje."');</script>");
				} else{
					echo("<script> alert('El cliente: ".$this->input->post('apellido',true)." no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function misDatos($idCliente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo. Ademas que sea el usuario logeado el mismo que el pasado por la url.
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && $this->session->userdata('tipoUsuarioLog') == '2' && $this->session->userdata('idClienteLog') == $idCliente){
			//Segunda comprobacion: Que idCliente pasado sea numerico y mayor que cero.
			if(is_numeric($idCliente) && $idCliente>0){
				//Cargo el modelo donde estan los datos de los clientes registrados
				$this->load->model('m_cliente');
				
				//Busco al cliente que hay que visualizar
				$cliente = $this->m_cliente->get($idCliente);
				
				//Tercera comprobacion: Que el cliente pasado por la url sea existente
				if($cliente->num_rows() == 1){
					//Le paso el cliente a visualizar a la vista
					$datos['clienteSel'] = $cliente;
															
					//Cargo la vista donde se muestra el formulario para visualizar un cliente y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_clientes_visualizar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para visualizar un cliente
					$this->load->view('v_admin', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para visualizar un cliente
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
}

/* End of file cliente.php */
/* Location: ./application/controllers/cliente.php */